/*
n
a[n] //a[i]个游戏币/元
b[n] //赚的钱数

每天使用的游戏币相同

*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
using namespace std;
using ll=long long;
#define mod(x) ((x+MOD)%MOD)

#define DEBUG
template <typename T>
inline void read(T& x)
{
    int c=getchar(), f=1; x=0;
    while(c<'0'||'9'<c) {if(c=='-') f=-1; c=getchar();}
    while('0'<=c&&c<='9') 
        x=(x<<3)+(x<<1)+c-'0', c=getchar();
    x*=f;
}

inline void write(long long x)
{
    if(x>=10) write(x/10);
    putchar(x%10+'0');
}

const int N=1e6+10;
int n;
int a[N], b[N], p[N]; //p[i]:第i天后比a[i]大的汇率的天数
ll l, r, money, coin;
void init()
{
    read(n);
    for(int i=1; i<=n; i++) read(a[i]);
    for(int i=1; i<=n; i++) read(b[i]);
    // for(int i=1; i<=n; i++) printf("%d ", a[i]); puts("");
    // for(int i=1; i<=n; i++) printf("%d ", b[i]); puts("");

    stack<int> s;
    for(int i=n; i; i--)
    {
        while(!s.empty()&&a[s.top()]<=a[i]) s.pop(); //将比a[i]小的全部弹出
        p[i]=s.empty()?0:s.top();
        s.push(i);
    }
}

bool check(ll mid)
{
    money=0, coin=0;
    for(int i=1; i<=n; i++)
    {
        money+=b[i];
        if(p[i]) //后面存在更大的 不应该在当前天换完
        {
            if(coin<1ll*(p[i]-i)*mid) //想等到最优解时硬币不够 需要购买最少量硬币
            {
                ll buy=1ll*(p[i]-i)*mid-coin; //当前还需要购买多少
                ll cost=min(buy/a[i]+(buy%a[i]>0), money); //需要花费的钱数 向上取整
                coin+=cost*a[i]; money-=cost; //更新硬币量 钱数
            }
        }
        else coin+=money*a[i], money=0; //已是最大值 当前天全部换完 更新钱数

        coin-=mid; //当前天花费mid
        if(coin<0) return false; 
    }
    return true;
}

void solve()
{
    init();

    l=0, r=1e12;
    while(l<r)
    {
        // printf("%lld %lld\n", l, r);
        ll mid=1+((l+r)>>1);
        // ll mid=(l+r)/2+1;
        if(check(mid)) l=mid;
        else r=mid-1;
    }
    // write(l); puts("");
    printf("%lld\n", l);

}

signed main()
{
    #ifdef DEBUG
        freopen("../in.txt", "r", stdin);
        freopen("../out.txt", "w", stdout);
    #endif
    int T=1; scanf("%d", &T);
    while(T--) 
    {
        solve();
    }
    return 0;
}